home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994…tember: Reference Library / Dev.CD Sep 94.toast / Periodicals / develop / develop Issue 18 / develop 18 code / Apple Guide Sample / Source / UApp.h < prev    next >
Encoding:
Text File  |  1994-04-01  |  5.7 KB  |  227 lines  |  [TEXT/MPS ]

  1. // Copyright ©1994 Apple Computer, Inc.
  2. // Author: John Powers
  3. // Date:   13-Mar-94
  4.  
  5. // UApp.h
  6. // Header for our main program.
  7. // Contains all our derived classes and our new classes.
  8. // The TApplication and TDocument folders
  9. // have been left unchanged  from the developer CD.
  10. // Our use of the application is tailored in the classes below.
  11.  
  12.                     // Define __UMAIN__ for the TApplication folder
  13. #define __UMAIN__
  14.  
  15. #ifndef __UAPP__
  16. #define __UAPP__                // #endif __UAPP__ is at end of this file
  17.  
  18. #include <Dialogs.h>
  19. #include <Fonts.h>                // monaco
  20. #include <Menus.h>
  21. #include <Packages.h>            // NumToString
  22. #include <Processes.h>            // GetCurrentProcess
  23. #include <PLStringFuncs.h>        // PLstrcpy
  24. #include <Resources.h>
  25. #include <Scrap.h>                // PutScrap, GetScrap
  26. #include <StandardFile.h>        // StandardFileReply
  27. #include <String.h>                // strcpy
  28. #include <Strings.h>            // p2cstr
  29. #include <Sysequ.h>
  30. #include <ToolUtils.h>            // EqualString
  31.  
  32. #ifndef __APPLEGUIDE__
  33.     #include "AppleGuide.h"
  34. #endif
  35.  
  36. #ifndef __AGFILE__
  37.     #include <AGFile.h>
  38. #endif
  39.  
  40. #ifndef TAPPLICATION_H
  41.     #include "TApplication.h"
  42. #endif
  43.  
  44. #ifndef __UDOC__
  45.     #include "UDoc.h"
  46. #endif
  47.  
  48. #ifndef __UAPPSHARED__
  49.     #include "::UAppShared.h"
  50. #endif
  51.  
  52.         // Constants (also see UAppShared.h).
  53.  
  54. #define    override virtual
  55.  
  56. enum
  57. {
  58.     kNoFilterProc = nil,
  59.     kInFrontOfAll =        -1,
  60.     kDefaultStorage =     nil,
  61.     kIsNotSysHandler = false,
  62.     kIsSysHandler = true,
  63.     kHandlerNotRequired = nil
  64. };
  65.                                 // Custom event class and id's
  66.                                 // General events are in TAppMo.
  67.                                 // Context events are in TContext.
  68. enum {    
  69.     kAEClassCustom =        'MoHC'
  70. };
  71.  
  72.                                 // DBInfo Dialog
  73. enum {
  74.     kDBInfoDialogID = 132,
  75.     kDBInfoOK = 1,
  76.     kDBInfoDatabase,
  77.     kDBInfoTypeLabel,
  78.     kDBInfoType,
  79.     kDBInfoMenuLabel,
  80.     kDBInfoMenu,
  81.     kDBInfoSelectorCntLabel,
  82.     kDBInfoSelectorCnt,
  83.     kDBInfoSelector1Label,
  84.     kDBInfoSelector1,
  85.     kDBInfoSelector1Value,
  86.     kDBInfoSelector2Label,
  87.     kDBInfoSelector2,
  88.     kDBInfoSelector2Value,
  89.     kDBInfoSelector3Label,
  90.     kDBInfoSelector3,
  91.     kDBInfoSelector3Value,
  92.     kDBInfoMixinLabel,
  93.     kDBInfoMixin,
  94.     kDBInfoVersionLabel,
  95.     kDBInfoVersion,
  96.     kDBInfoScriptLabel,
  97.     kDBInfoScript,
  98.     kDBInfoRegionLabel,
  99.     kDBInfoRegion
  100. };
  101.                                 // AlertIfError Dialog
  102. enum {
  103.     kAlertIfErrorDialogID = 133,
  104.     kAlertIfErrorOK = 1,
  105.     kAlertIfErrorMsg,
  106.     kAlertIfErrorErrNum
  107. };
  108.  
  109.         // typedef's
  110.  
  111.         // StartSpecType is a resource.
  112.         // See UApp.r for the description of this structure.
  113. typedef struct StartSpecType {
  114.     short    autoStartFlag;
  115.     short    quitAfterGuide;
  116.     short    type;
  117.     short    sequenceID;
  118.     Str63    fileName;
  119. } StartSpecType, *StartSpecPtr, **StartSpecHan;
  120.  
  121.         // Globals
  122.  
  123. Boolean gAGuideAvailable;
  124.  
  125. OSErr AlertIfError(OSErr err);
  126. void CenterWindow(WindowPtr pWin);
  127. void GetWindowBounds(WindowPtr pWin, Rect* pBoundsRect);
  128.  
  129.         // Forward references
  130.  
  131. class TDoc;
  132. class TDocClip;
  133.  
  134. // ------------------------------------------------------------------------
  135. // TScrap
  136. // Handles the scrap/clipboard.
  137.  
  138. class TScrap
  139. {
  140.     private:
  141.         short        fLastScrapCount;    // Last scrapCount from InfoScrap.
  142.         TDocClip*    fDocClip;            // Collaborator document.
  143.     protected:
  144.     public:
  145.         TScrap();
  146.         virtual void DoIdle();
  147.         virtual void Draw(WindowPtr pWin);
  148.         virtual void Put(Handle hToScrap);
  149.         virtual void SetDoc(TDocClip* doc) {this->fDocClip=doc;}
  150.         virtual Boolean Update();
  151. };
  152.  
  153. // ------------------------------------------------------------------------
  154. // TAStart
  155. // Handles automatic startup and termination.
  156.  
  157. class TAStart
  158. {
  159.     private:
  160.         short        fGuideHasRun;        // true if guide was provided.
  161.         short        fQuitAfterGuide;    // true if app quits after guide done.
  162.         AGRefNum    fGuideRefNum;        // Ref num for open database.
  163.         FSSpec        fPresetGuideFile;    // Guide database from autostart resource
  164.     protected:
  165.     public:
  166.         TAStart();
  167.         virtual AGErr AttemptAutoStart();
  168.         virtual void GetFile(FSSpec& guideFile) {guideFile=this->fPresetGuideFile;}
  169.         virtual void GetRefNum(AGRefNum& refNum) {refNum = this->fGuideRefNum;}
  170.         virtual OSErr Init();
  171.         virtual Boolean ShouldWeQuit();
  172. };
  173.  
  174. // ------------------------------------------------------------------------
  175. // Derive our application class from the application base class.
  176. // Add the About dialog, initialization, and a menu.
  177.  
  178. class TApp : public TApplication
  179. {
  180.     enum
  181.     {
  182.         kSleepValue = 10
  183.     };
  184.     private:
  185.         TDocClip*    fDocClip;        // Clipboard document window
  186.         TScrap*        fScrap;            // Scrap object.
  187.             // New functions.
  188.         virtual void DoDBInfoDialog(FSSpec& guideFileSpec);
  189.     protected:
  190.         short        fMenuBarID;            // Set in the Init function.
  191.         AGRefNum    fGuideRefNum;        // The Apple Guide refnum.
  192.         FSSpec        fPresetGuideFile;    // Preset guide database
  193.         TAStart*    fAutoStart;            // AutoStart object.
  194.             // New functions.
  195.         virtual void CloseDoc(TDoc* docToClose);
  196.         virtual void CopyToClipboard();
  197.         virtual void DoAbout();
  198.         virtual void DoHighLevelEvent();
  199.         virtual void GetVersion(Str255 versStr);
  200.         virtual OSErr OpenGuideDatabase(FSSpec *pFileSpec);
  201.         virtual OSErr SelectFile(FSSpec& selectedFile);
  202.         virtual void SetDoc();
  203.         virtual void ShowClipboard();
  204.         virtual OSErr Start();
  205.             // Overrides.
  206.         override void AdjustCursor() {SetCursor( &qd.arrow );}
  207.         override void AdjustMenus();
  208.         override void DoGoAway();
  209.         override void DoIdle();
  210.         override void DoMenuCommand(short menuID, short menuItem);
  211.         override unsigned long SleepVal() { return kSleepValue; } // Sleep duration in WNE
  212.     public:
  213.             // New functions.
  214.         virtual void GetRefNum(AGRefNum& refNum) { refNum = this->fGuideRefNum; }
  215.         virtual void GetFile(FSSpec& fileSpec) { fileSpec = this->fPresetGuideFile; }
  216.         static pascal OSErr HandleAECore(AppleEvent& theAppleEvent,
  217.                                             AppleEvent& theReply,
  218.                                             long refCon);
  219.         virtual OSErr Init();
  220.         virtual void Quit();
  221.         virtual OSErr SendEventToSelf(AEEventID theEvent);
  222.         virtual void SetRefNum(AGRefNum refNum) { this->fGuideRefNum = refNum; }
  223.             // Overrides
  224.         override void EventLoop();
  225. };
  226.  
  227. #endif __UAPP__